// export module Db {

// }

// let dbUrl = 'xxxxx.com'

// 单个成员导出
// export function getData(id: number): any[] {
//     console.log('数据库已连接');
//     return [
//         { title: '标题1', desc: '内容1' },
//         { title: '标题2', desc: '内容2' },
//         { title: '标题3', desc: '内容3' },
//     ]
// }

// function saveData(): void {
//     console.log('保存数据成功');
// }

// 多个成员放在对象里一起导出
// export { dbUrl, saveData }

// export default getData  // default 导出一个模块只能有一个，对应的import :import getData from ''

// 演示 通过通配符(*)，导入所有暴露的成员，并 as 一个别名
// let valA: string = 'valA'
// let valB: string = 'valB'

// function setVal(va: string, vb: string) {
//     valA = va
//     valB = vb
// }

// // 直接导出valA,valB，其他模块虽然可以导入，但是无法修改valA,valB的值，通过导入的变量是只读的
// export { valA, valB, setVal }


// 演示类的导入
interface DBI<T> {
    add(info: T): boolean;
    update(info: T, id: number): boolean;
    delete(id: number): boolean;
    get(id: number): any[];
}

export class MysqlDb<T> implements DBI<T> {
    constructor(){
        // build connection
    }
    add(info: T): boolean {
        console.log('数据添加成功：',info);            
        return true;
    }
    update(info: T, id: number): boolean {
        throw new Error("Method not implemented.");
    }
    delete(id: number): boolean {
        throw new Error("Method not implemented.");
    }
    get(id: number): any[] {
        throw new Error("Method not implemented.");
    }
}

export class MongoDb<T> implements DBI<T> {
    constructor(){
        // build connection
    }
    add(info: T): boolean {
        console.log('数据添加成功：',info);            
        return true;
    }
    update(info: T, id: number): boolean {
        throw new Error("Method not implemented.");
    }
    delete(id: number): boolean {
        throw new Error("Method not implemented.");
    }
    get(id: number): any[] {
        throw new Error("Method not implemented.");
    }
}